Micron Document
🎖️GitЯра🎖️

Node / reticulum / gopher-rns / files / gopherd.py

Displaying Raw • Download

gopherd.py master (77dab076) Text, 1.25 KB

T8b949e#!/usr/bin/env python3
T8b949e"""Gopher server over Reticulum"""

Tff7b72import T7ee787argparse
Tff7b72import T7ee787sys
Tff7b72import T7ee787os

Te6edf3sysTff7b72.Td2a8ffpathTff7b72.Td2a8ffinsertTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffabspathTb4b4b4(Tff7b72__file__Tb4b4b4)Tb4b4b4)Tb4b4b4)

Tff7b72from T7ee787gopher_rnsT7ee787.T7ee787server Tff7b72import Te6edf3GopherServer


Tff7b72def Td2a8ffmainTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3parser Tff7b72= Te6edf3argparseTff7b72.Td2a8ffArgumentParserTb4b4b4(Te6edf3descriptionTff7b72=Ta5d6ff'Ta5d6ffGopher server over ReticulumTa5d6ff'Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff'Ta5d6ffcontent_dirTa5d6ff'Tb4b4b4, Te6edf3helpTff7b72=Ta5d6ff'Ta5d6ffDirectory to serveTa5d6ff'Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff'Ta5d6ff-iTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff--identityTa5d6ff'Tb4b4b4, Te6edf3defaultTff7b72=Ta5d6ff'Ta5d6ff~/.gopher_server_identityTa5d6ff'Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff'Ta5d6ffPath to identity file (default: ~/.gopher_server_identity)Ta5d6ff'Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff'Ta5d6ff-aTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff--app-nameTa5d6ff'Tb4b4b4, Te6edf3defaultTff7b72=Ta5d6ff'Ta5d6ffgopherTa5d6ff'Tb4b4b4,
Te6edf3helpTff7b72=Ta5d6ff'Ta5d6ffReticulum app name (default: gopher)Ta5d6ff'Tb4b4b4)

Te6edf3args Tff7b72= Te6edf3parserTff7b72.Td2a8ffparse_argsTb4b4b4(Tb4b4b4)

Te6edf3identity_path Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffexpanduserTb4b4b4(Te6edf3argsTff7b72.Td2a8ffidentityTb4b4b4)
Te6edf3content_dir Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffabspathTb4b4b4(Te6edf3argsTff7b72.Td2a8ffcontent_dirTb4b4b4)

Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3content_dirTb4b4b4)Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError: Tffd700{Te6edf3content_dirTffd700}Ta5d6ff is not a directoryTa5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)
Te6edf3sysTff7b72.Td2a8ffexitTb4b4b4(T79c0ff1Tb4b4b4)

Tff7b72tryTb4b4b4:
Te6edf3server Tff7b72= Te6edf3GopherServerTb4b4b4(Te6edf3identity_pathTb4b4b4, Te6edf3content_dirTb4b4b4, Te6edf3argsTff7b72.Td2a8ffapp_nameTb4b4b4)
Te6edf3serverTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149KeyboardInterruptTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ffShutting down...Ta5d6ff"Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4, Te6edf3fileTff7b72=Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)
Te6edf3sysTff7b72.Td2a8ffexitTb4b4b4(T79c0ff1Tb4b4b4)


Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff'Ta5d6ff__main__Ta5d6ff'Tb4b4b4:
Te6edf3mainTb4b4b4(Tb4b4b4)

Served by rngit 1.5.2 - Generated in 0.06s